﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using WCFAlmacen.Dominio;
using WCFAlmacen.Persistencia;

namespace WCFAlmacen
{
    public class ServiceMateriales : IServiceMateriales
    {
        private GREstadoMatDAO estadoMatDAO = null;
        private GREstadoMatDAO EstadoMatDAO
        {
            get
            {
                if (estadoMatDAO == null)
                    estadoMatDAO = new GREstadoMatDAO();
                return estadoMatDAO;
            }
        }

        private GRCategoriaDAO categoriaMatDAO = null;
        private GRCategoriaDAO CategoriaMatDAO
        {
            get
            {
                if (categoriaMatDAO == null)
                    categoriaMatDAO = new GRCategoriaDAO();
                return categoriaMatDAO;
            }
        }

        private GRSubCategoriaDAO subcategoriaMatDAO = null;
        private GRSubCategoriaDAO SubCategoriaMatDAO
        {
            get
            {
                if (subcategoriaMatDAO == null)
                    subcategoriaMatDAO = new GRSubCategoriaDAO();
                return subcategoriaMatDAO;
            }
        }

        private GRMaterialDAO materialMatDAO = null;
        private GRMaterialDAO MaterialMatDAO
        {
            get
            {
                if (materialMatDAO == null)
                    materialMatDAO = new GRMaterialDAO();
                return materialMatDAO;
            }
        }

        private GRUniMedidaDAO uniMedidaDAO = null;
        private GRUniMedidaDAO UniMedidaDAO
        {
            get
            {
                if (uniMedidaDAO == null)
                    uniMedidaDAO = new GRUniMedidaDAO();
                return uniMedidaDAO;
            }
        }

        public List<GRCategoria> ListarCategorias()
        {
            return CategoriaMatDAO.ListarCategorias();
        }

        public GRCategoria ObtenerDatosCategoria(Int32 intCodCategoria)
        {
            return CategoriaMatDAO.ObtenerDatosCategoria(intCodCategoria);
        }

        public List<GRSubCategoria> Listar_SubCategorias()
        {
            return SubCategoriaMatDAO.ListarSubCategorias();
        }

        public GRSubCategoria ObtenerDatosSubCategoria(Int32 intCodSubCategoria)
        {
            return SubCategoriaMatDAO.ObtenerDatosSubCategoria(intCodSubCategoria);
        }

        public List<GRSubCategoria> Listar_SubCategoria_X_Categoria(Int32 intCodCategoria)
        {
            return SubCategoriaMatDAO.ObtenerSubCatXCategoria(intCodCategoria);
        }

        public List<GRMaterial> ListarMateriales()
        {
            return MaterialMatDAO.ListarMateriales();
        }

        public GRMaterial ObtenerDatosMateriales(int intCodMaterial)
        {
            return MaterialMatDAO.ObtenerDatosMaterial(intCodMaterial);
        }

        public List<GRMaterial> Listar_Materiales_X_SubCategoria(int intCodSubCategoria)
        {
            return MaterialMatDAO.ObtenerMaterialXSubCategoria(intCodSubCategoria);
        }

        public List<GRUniMedida> ListarUnidadMedidas()
        {
            return UniMedidaDAO.ListarUnidadMedidas();
        }

        public GRUniMedida ObtenerUnidadMedida(Int32 intCodigoUnMedida)
        {
            return UniMedidaDAO.ObtenerUnidadMedida(intCodigoUnMedida);
        }

        public List<GREstadoMat> ListarEstadoMateriales()
        {
            return EstadoMatDAO.ListarEstadosMateriales();
        }

        public GREstadoMat ObtenerDatosEstadoMaterial(Int32 intCodEstadoMaterial)
        {
            return EstadoMatDAO.ObtenerDatosEstadoMaterial(intCodEstadoMaterial);
        }
    }
}
